

/*
 页面父类基础界面
 */

/*
扫描界面(二维码,条码)
(暂只支持竖屏,对焦速度和识别快,横屏时摄像头方向错误,需要修改mobile_scanner.dart源文件???,底层使用原生新库)
适配android iOS mac:  https://pub.flutter-io.cn/packages/mobile_scanner  https://github.com/juliansteenbakker/mobile_scanner
dependencies:
  mobile_scanner: ^2.1.0
import 'package:mobile_scanner/mobile_scanner.dart';
使用:
android:需要在清单文件中添加摄像头权限;(不需要同作者github上的其他依赖配置和原生源码调用)


(支持竖屏和横屏,对焦相对慢,此版本只维护,因为使用zxing for android and MTBBarcodescanner for iOS,官方也不更新):https://pub.flutter-io.cn/packages/qr_code_scanner
dependencies:
  qr_code_scanner: ^1.0.1
import 'package:qr_code_scanner/qr_code_scanner.dart';
使用:
android:需要在清单文件中添加摄像头权限;(不需要同作者github上的其他依赖配置和原生源码调用)


此为mobile_scanner,目前只支持竖屏,对焦速度快,后期继续关注版本更新....



解决android中第三方依赖包重复冲突:
在原生Android开发项目的gradle中添加:
configurations {
    all*.exclude group: 'com.google.zxing', module: 'core'
}

2种exclude冲突依赖方式的区别
方式一：
implementation(“com.xxx.xxx:xxx”) {
exclude group: ‘com.xxx.xxx’
}
1.有多个引用依赖冲突时，exclude group会保留一个
2.只有1个依赖没有冲突时，exclude group也会保留一个

方式二：
configurations {
all*.exclude group: ‘com.xxx.xxx’
}
1.有多个引用依赖冲突时，all*.exclude会保留一个
2.只有1个依赖没有冲突时，all*.exclude不会保留，会有运行时找不到类的风险


 */
// abstract class XPageScan1State extends XPageState{
//
//   XPageScan1State({
//     super.isKeepPageState=false,
//     super.xTag,
//   });
//
//   MobileScannerController cameraController = MobileScannerController();
//
//   @override
//   void onCreate() {
//     super.onCreate();
//     //mobile_scanner目前暂只支持竖屏
//     XFlutterUtils.setScreenOrientation(true);
//
//   }
//
//   @override
//   Future<void> updateData({int pageIndex = 1}) async {
//   }
//
//   @override
//   Widget getBodyWidget(BuildContext context) {
//     //简单,没有控制器
//     // return MobileScanner(
//     //     allowDuplicates: true,
//     //     onDetect: (barcode, args) {
//     //       if (barcode.rawValue == null) {
//     //         debugPrint('Failed to scan Barcode');
//     //         XLogUtils.printLog('---Failed to scan Barcode');
//     //       } else {
//     //         final String code = barcode.rawValue!;
//     //         XLogUtils.printLog('---scan code=$code');
//     //       }
//     //     });
//
//     //简单,默认打开闪光灯,使用后置摄像头
//     // return MobileScanner(
//     //     allowDuplicates: false,
//     //     controller: MobileScannerController(
//     //         facing: CameraFacing.back, //后置摄像头
//     //         torchEnabled: true //闪光灯
//     //     ),
//     //     onDetect: (barcode, args) {
//     //       if (barcode.rawValue == null) {
//     //         XLogUtils.printLog('---Failed to scan Barcode');
//     //       } else {
//     //         final String code = barcode.rawValue!;
//     //         XLogUtils.printLog('---scan code=$code');
//     //       }
//     //     });
//
//     //有控制器,可打开闪光灯,切换前后摄像头
//     // return XWidgetUtils.getLayoutColumn(children: [
//     //   XWidgetUtils.getLayoutRow(children: [
//     //     IconButton(
//     //       color: Colors.white,
//     //       icon: ValueListenableBuilder(
//     //         valueListenable: cameraController.torchState,
//     //         builder: (context, state, child) {
//     //           switch (state as TorchState) {
//     //             case TorchState.off:
//     //               return const Icon(Icons.flash_off, color: Colors.grey);
//     //             case TorchState.on:
//     //               return const Icon(Icons.flash_on, color: Colors.yellow);
//     //           }
//     //         },
//     //       ),
//     //       iconSize: 32.0,
//     //       onPressed: () => cameraController.toggleTorch(),
//     //     ),
//     //     IconButton(
//     //       color: Colors.white,
//     //       icon: ValueListenableBuilder(
//     //         valueListenable: cameraController.cameraFacingState,
//     //         builder: (context, state, child) {
//     //           switch (state as CameraFacing) {
//     //             case CameraFacing.front:
//     //               return const Icon(Icons.camera_front);
//     //             case CameraFacing.back:
//     //               return const Icon(Icons.camera_rear);
//     //           }
//     //         },
//     //       ),
//     //       iconSize: 32.0,
//     //       onPressed: () => cameraController.switchCamera(),
//     //     )
//     //   ]),
//     //   XWidgetUtils.getLayoutExpanded(
//     //       MobileScanner(
//     //           allowDuplicates: false,
//     //           controller: cameraController,
//     //           onDetect: (barcode, args) {
//     //             if (barcode.rawValue == null) {
//     //               debugPrint('Failed to scan Barcode');
//     //             } else {
//     //               final String code = barcode.rawValue!;
//     //               debugPrint('Barcode found! $code');
//     //             }
//     //           })
//     //   ),
//     // ]);
//
//
//
//     return XWidgetUtils.getLayoutStack(children: [
//       XWidgetUtils.getLayoutExpanded(
//           MobileScanner(
//               controller: cameraController,
//               onDetect: (BarcodeCapture barcodes) {
//                 if (barcodes.raw == null) {
//                   XLogUtils.printLog('---Failed to scan!');
//                 } else {
//                   final String code = barcodes.raw!;
//                   XLogUtils.printLog('---scan result= $code');
//                   scanResultCallback(code);
//                 }
//               })
//       ),
//       getItemWidgetInStack()
//     ]);
//   }
//
//
//   //在Stack最上面,可添加对焦框,打开闪光灯,切换前后摄像头按钮,搜索框等
//   @required
//   Widget getItemWidgetInStack();
//
//   //扫描结果响应
//   @required
//   void scanResultCallback(String result);
//
//
//
// }